package com.kashow.base;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

import java.lang.ref.WeakReference;
import java.util.Stack;

/**
 * Created by yybs on 17/1/11.
 */

public class AppManager {
        private Stack<WeakReference<Activity>> activityStack;
        private AppManager instance;
        /**
         * 添加Activity到堆栈
         */
        public void addActivity(Activity activity){
            if(activityStack==null){
                activityStack =new Stack<WeakReference<Activity>>();
            }
            activityStack.add(new WeakReference<Activity>(activity));
        }
        /**
         * 获取当前Activity（堆栈中最后一个压入的）
         */
        public Activity currentActivity(){
            Activity activity = activityStack.lastElement().get();
            return activity;
        }
        /**
         * 结束当前Activity（堆栈中最后一个压入的）
         */
        public void finishActivity(){
            Activity activity = activityStack.lastElement().get();
           if (activity != null) {
               finishActivity(activity);
           }
        }
        /**
         * 结束指定的Activity
         */
        public void finishActivity(Activity activity){
            if(activity!=null){
                activityStack.remove(activity);
                activity.finish();
                activity=null;
            }
        }
        /**
         * 结束指定类名的Activity
         */
        public void finishActivity(Class<?> cls){
            for (WeakReference<Activity> activity : activityStack) {
                if(activity.getClass().equals(cls) ){
                    finishActivity(activity.get());
                }
            }
        }
        /**
         * 结束所有Activity
         */
        public void finishAllActivity(){
            for (int i = 0, size = activityStack.size(); i < size; i++){
                if (null != activityStack.get(i)){
                    Activity activity = activityStack.get(i).get();
                    if (null != activity) {
                        activity.finish();
                    }
                }
            }
            activityStack.clear();
        }
        /**
         * 退出应用程序
         */
        public void AppExit(Context context) {
            try {
                finishAllActivity();
                ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
                activityMgr.restartPackage(context.getPackageName());
                System.exit(0);
            } catch (Exception e) {	}
        }
}
